Computer graphics have advanced significantly in the past years, especially in light of the increased popularity of video gaming. Various techniques have been employed to create fast and realistic computer graphics for various applications and to overcome common problems with rendering scenes and objects in computer graphics applications.
Reflections and refraction are difficult to model in computer graphics applications because they often produce non-linear rays or beams. For reflection, the ultimate goal is to render curved reflections of nearby objects with fully dynamic motion in real time. However, in the past in an attempt to meet such a goal, it has been necessary to either assume distant objects, planar reflectors, static scenes, limited motion for frame-to-frame coherence, or to rely on extensive pre-computation for all possible motion parameters. For example, some methods allow curved mirror reflection of distant objects but not for nearby objects. Additionally, some previous rendering techniques have required fine tessellation of scene geometry for rendering curvilinear effects. This requires a high geometry computation workload regardless of the original scene complexity, which is often quite simple for interactive applications such as games. Refraction poses an even bigger challenge than reflection, as even planar refraction can produce non-linear effects. Common rendering techniques typically handle only nearly planar refractors or only far away scene objects, but not refraction of near objects.
Some techniques for displaying computer graphics include ray tracing and beam tracing. Ray tracing is a rendering algorithm where visualisations of programmed scenes are produced using a technique which follows rays from the eyepoint outward, rather than originating at the light source. Ray tracing efficiently provides accurate simulations of reflection and refraction of light off of objects in a scene. However, most existing ray tracing techniques store scene geometry in a database and pre-compute certain data structures for efficient rendering. As such ray tracing is less suitable for rendering dynamic scenes.
Beam tracing is a derivative of ray tracing that replaces rays, which have no thickness, with beams. Beams are shaped like unbounded pyramids, with polygonal cross sections and with a beam base that intersects the film or sensor plane of the camera capturing the scene. Beam tracing combines the flexibility of ray tracing and the speed of polygon rasterization in computer graphics applications. One primary advantage of beam tracing is efficiency as it can render individual beams via polygon rasterization which is readily performed by conventional graphics processing units (GPUs). Beam tracing can also resolve sampling, aliasing and level of detail issues that plague conventional ray tracing. However, beam tracing to date has been only able to process linear transformations. Thus, beam tracing has only been applicable to linear effects such as planar mirror reflections but not to non-linear effects such as curved mirror reflection, refraction, caustics, and shadows. Note that such non-linear effects are not limited to curved geometry as even planar refraction is non-linear. Another common non-linear effect arises from bump-mapped surfaces as modeling them requires incoherent ray bundles that cannot be handled using non-linear beams. Furthermore, non-linear beam tracing is highly challenging because common graphics hardware, such as, for example, commodity graphics hardware, supports only linear vertex transformation and triangle rasterization.